/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package similarite;

import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author Clement
 */
public class MatrixOperation {

    //Retourne le nombre de similarité entre deux images par rapport au distances des sifts
    public static int getNbSim(List<List<Float>> matrixA,
            List<List<Float>> matrixB) {
        int res = 0;

        for (int i = 0; i < matrixA.size(); i++) {
            for (int j = 0; j < matrixA.get(i).size(); j++) {
                if (matrixA.get(i).get(j) == matrixB.get(i).get(j)
                        && matrixA.get(i).get(j) < 100) {
                    res++;
                }
            }
        }

        return res;
    }

    //Retourne le nombre de similarité entre deux images par rapport au distances des sifts
    public static int getMatSim(List<List<Float>> matrixA,
            List<List<Float>> matrixB) {
        List<Float> res = new ArrayList();
        int r = 0;
        for (int i = 0; i < matrixA.size(); i++) {
            for (int j = 0; j < matrixB.size(); j++) {
                Float d = getDistance(matrixA.get(i), matrixB.get(j));
                if (d < 100) {
                    res.add(d);
                    r++;
                } else {
                    res.add(-d);
                }
            }
        }

        return r;
    }

    public static Float getDistance(List<Float> siftA, List<Float> siftB) {
        float res = 0;

        for (Float i : siftA) {
            for (Float j : siftB) {
                res = i - j;
                res = res * res;
            }
        }
        res = (float) Math.sqrt(res);
        return res;
    }
}
